


































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
domande e risposte aperte linguaggi di programmazione
Tipologia: Prove d'esame
1 / 42
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!



































Linguaggi di programmazione professore Vecchio Massimo a cosa serve la bufferizzazione di uno stream? a disaccoppiare le azioni di effettiva lettura/scrittura del sistema operativo dalla macchina virtuale Java che differenza c'è tra un linguaggio di programmazione interpretato e uno compilato? un linguaggio compilato viene prima tradotto in linguaggio macchina che differenza c'è tra una classe ed un oggetto? La classe è quella cosa che definisce il comportamento generale degli oggetti che vi appartengono.Con comportamento indichiamo le azioni (metodi) che un oggetto di quella classe può fare, e lo stato interno (le variabili). Gli oggetti sono delle "cose" che hanno il comportamento della classe.ovviamente 2 oggetti distinti possono avere comportamenti diversi inbase al proprio stato interno (cioè alle variabili). Una classe è la descrizione astratta di un tipo di dato; un oggetto è la realizzazione (istanza) di una classe che differenze ci sono tra una pila e una coda? Somiglianze> entrambi i tipi di dato astratto possono essere realizzati con la stessa struttura dati una pila è una collezione di oggetti in cui agli oggetti si accede a LIFO (Last In First Out). Una coda è un insieme di oggetti in cui gli oggetti sono accessibili nel FIFO (First In First Out) sequenza. In una pila, un oggetto è spinto in cima alla raccolta durante l'operazione di inserimento. In una coda, un nuovo oggetto viene inserito alla fine. che differenze tra tipo di dato astratto e struttura dati? si faccia riferimento al linguaggio Java Una struttura dati (data structure) è un modo sistematico di organizzare i dati in un contenitore e di controllarne le modalità d’accesso. In Java si definisce una struttura dati con una classe. Un tipo di dati astratto (ADT, Abstract Data Type) è una rappresentazione astratta di una struttura dati, un modello che specifica: il tipo di dati memorizzati
Il linguaggio intermedio dei bytecodes e le varie JVM sono soltanto una parte dell’insieme che fa si che il linguaggio Java si uno fra i linguaggi di programmazione più portabili. Mentre l’altra parte comprende la piattaforma Java. chi gestisce l'oggetto eccezione (exception object) in Java? In Java l’exception object viene gestito dal run-time system come avviene l'inserzione di un elemento in una lista? StringBuilder insert(int offset, boolean b) StringBuilder insert(int offset, char c) StringBuilder insert(int offset, double d) StringBuilder insert(int offset, float f) StringBuilder insert(int offset, int i) StringBuilder insert(int offset, long lng) StringBuilder insert(int offset, String s) Inserisce il secondo argomento nella posizione specificata dal primo argomento Una lista è una struttura dati che permette di memorizzare dati in maniera sequenziale, e permette di accedere e cancellare dati in posizioni arbitrarie (cioè non solo il primo o l'ultimo inserito, come nel caso di pile e code). Una lista concatenata è una sequenza lineare di nodi, ciascuno dei quali memorizza un valore e contiene un riferimento (puntatore) al nodo successivo nella sequenza. In questo modo è possibile aggiungere e cancellare nodi in qualunque posizione semplicemente aggiustando il sistema di puntatori senza operare sui nodi non interessati dalla aggiunta o dalla cancellazione. La seguente classe implementa un nodo di una lista concatenata. /**
Dove T ( Generics ) è il tipo che verrà archiviato all'interno di ArrayList. Il tipo di ArrayList può essere qualsiasi oggetto. Il tipo non può essere un tipo primitivo (usa invece le loro classi wrapper ). Per aggiungere un elemento a ArrayList , utilizzare il metodo add() : myArrayList.add(element); O per aggiungere elementi a un determinato indice: myArrayList.add(index, element); //index of the element should be an int (starting from 0) Per rimuovere un oggetto da ArrayList , utilizzare il metodo remove() : myArrayList.remove(element); O per rimuovere un elemento da un certo indice: myArrayList.remove(index); //index of the element should be an int come avviene la rimozione di un elemento in una lista? //eliminazione elemento in testa public static NodoLista outTesta(NodoLista p) { p = p.next; return p; } //eliminazione elemento prima di un dato elemento public static NodoLista elimina(NodoLista p, String cercata){ if (p == null) return p; if (p.info.equals(cercata)) { p = p.next; //eliminazione elemento cercato return p; //in prima posizione } NodoLista pp = p; while (pp.next != null) { if (pp.next.info.equals(cercata)) { pp.next = pp.next.next; //eliminazione elemento cercato break; //in posizione interna }
pp = pp.next; } return p; } //eliminazione elemento prima di un dato elemento //con nodo generatore public static NodoLista elimina(NodoLista p, String cercata){ NodoLista pp = new NodoLista(); // creazione nodo generatore pp.next = p; p = pp; while (pp.next != null) { //ora ogni nodo ha un predecessore if (pp.next.info.equals(cercata)) { pp.next = pp.next.next; // eliminazione elemento cercato break; //in posizione interna } pp = pp.next; } p = p.next; //eliminazione del nodo generatore return p; } Per modificare un ArrayList mentre lo stai scorrendo, devi necessariamente passare attraverso gli Iterator se non vuoi incappare in una ConcurrentModificationException: ArrayList
Commentare la seguente espressione regolare: [ae]tto A o e tto etto o atto Commentare la seguente espressione regolare: /d E’ errata \d matcha qualsiasi cifra numerica Commentare la seguente espressione regolare: m[a-z]ra Qualunque lettera tra a e z in mezzo a m e ra Commentare la seguente espressione regolare: m[aeiou]ra rappresenta un gruppo di stringhe Le espressioni regolari (spesso abbreviate in Inglese con regexp o indicate come regular patterns) sono linguaggi molto usati in informatica per rappresentare in modo sintetico insiemi di stringhe di caratteri. Ad esempio, con l'espressione m[aeiou]ra
Con riferimento a Java 8, cosa è uno stream?
Con riferimento a Java, si introducano le servlet Con riferimento agli operatori, cosa si intende per associatività? L‘associatività degli operatori permette di stabilire l‘ordine di applicazione tra operatori che hanno la stessa precedenza.Tutti gli operatori binari sono associativi a sinistra (ad eccezione degli operatori di assegnazione, che sono associativi a destra) quindi 6 + 2 + 1 viene interpretato come (6 + 2) + 1 e vale 9. 6 - 2 - 1 viene interpretato come (6 - 2) - 1 e vale 3 (non 5) Con riferimento al Java, chi definisce una interfaccia (costrutto interface)? Argomentare la risposta Una interfaccia è definita dai metodi che la compongono Con riferimento al Java, chi implementa una interfaccia (costrutto interface)? Argomentare la risposta Si può dichiarare che una classe implementa ( implements ) una data interfaccia: in questo caso la classe deve fornire una realizzazione per tutti i metodi astratti dell'interfaccia, cioè la classe deve fornire metodi con la stessa firma descritta nell'interfaccia (e con il corpo, naturalmente). La realizzazione di un metodo deve anche rispettare la "specifica" del corrispondente metodo astratto. Con riferimento al Java, chi realizza i metodi di una interfaccia (costrutto interface)? Argomentare la risposta In generale, un interfaccia rappresenta una sorta di “promessa” che una classe si impegna a mantenere. La promessa è quella di implementare determinati metodi di cui viene resa nota soltanto la definizione. Ciò che è importante non è tanto come verranno implementati tali metodi all’interno della classe ma, piuttosto, che la denominazione ed i parametri richiesti siano assolutamente rispettati. Creiamo un’interfaccia denominata StackInterface, con il seguente codice:
public interface StackInterface { public void push(int i); public int pop(); } Sono stati definiti due metodi (push e pop), corrispondenti rispettivamente alle due operazioni di inserimento ed eliminazione di elementi dalla pila ma non ne viene in alcun modo fornita l’implementazione. Supponiamo, ora, di voler definire una classe Stack che contenga il codice necessario per la corretta gestione di una pila. Tale classe sarà definita nel seguente modo: public class Stack implements StackInterface { public void push(int i) { … …. } public int pop() { … …. } } Come si potrà osservare, all’interno della classe Stack sono implementati i metodi che sono stati definiti all’interno dell’interfaccia StackInterface. Poiché la classe Stack promette di fare uso dell’interfaccia StackInterface (lo si può notare dalla istruzione “implements StackInterface”), qualora il programmatore omettesse di definire e implementare uno o entrambi questi metodi, si otterrebbe un errore di compilazione Con riferimento al Java, cosa è Iterator? L’Iterator rappresenta un'astrazione del concetto di “puntatore a un elemento del contenitore” e permette di scorrere il contenitore senza bisogno di conoscere l'effettivo tipo degli elementi Con riferimento al Java, cosa si intende per "Autoboxing"? Argomentare la risposta L’Autoboxing è la conversione automatica che il compilatore effettua tra un tipo primitivo e l'equivalente oggetto wrapper. Ad esempio, se il contesto richiede un Integer e noi specifichiamo un int , spesso il compilatore è in grado di effettuare autonomamente la conversione richiesta: Integer i = 10; Con riferimento al Java, cosa si intende per "metodi di interfaccia" (o "interfaccia esposta")? L'interfaccia esposta della classe include tutti e solo i metodi che possono essere usati per manipolare le istanze di quella classe. Con riferimento al Java, cosa si intende per "Unboxing"? Argomentare la risposta L’Unboxing è la conversione automatica che il compilatore effettua tra un oggetto wrapper ed il suo tipo primitivo equivalente Con riferimento al Java, cosa sono StringBuffer e StringBuilder? Argomentare la risposta le classi StringBuffer e StringBuilder di oggetti possono essere modificate molte volte, e non crea nuovi oggetti inutilizzati, a differenza della classe String. Internamente, essi sono trattati come array di dimensione variabile che contengono sequenze di caratteri. La lunghezza e il contenuto della sequenza possono essere modificati mediante chiamate a metodi. La più grande differenza tra StringBuilder e il StringBuffer è che StringBuilder non è thread-safe (non può sincronizzare l'accesso). Con riferimento al Java, si commenti il seguente: public class Territorio {} Con questo codice dichiariamo una classe pubblica di nome Territorio vuota Con riferimento al Java, si commenti il seguente: public class Territorio {Int a;} Con il codice public class Territorio { Int a; } abbiamo dichiarato una classe di nome Territorio, di tipo pubblico, dichiarando una variabile a, appartenente alla classe Territorio, di tipo Integer
Adesso ereditiamo la classe, creandone un'altra che modella il "RespondabileDiProgetto" che, oltre ad uno stipendio fisso, ha un attributo che rappresenta un bonus di produzione. Dunque la retribuzione di questo dipendente sarà data dalla somma dello stipendio base con l'eventuale bonus. Quindi il codice per la classe sarà il seguente: public class ResponsabileDiProgetto extends Dipendente { private int bonus; public int stipendio() { int stipendioBase=(getOreLavorativeMensili() * getRetribuzioneOraria()); return stipendioBase + bonus; } } Con l'override, quindi, è possibile ridefinire un metodo di una classe più generalista adattandolo così alla classe più specialista mantenendo comunque una coerenza per quanto riguarda la semantica del metodo che avrà lo stesso identico nome. Con riferimento al Java, si discuta l'ereditarietà multipla non esiste l'ereditarietà è uno dei concetti fondamentali nel paradigma di programmazione a oggetti. Essa consiste in una relazione che il linguaggio di programmazione, o il programmatore stesso, stabilisce tra due classi. Se la classe B eredita dalla classe A , si dice che B è una sottoclasse di A e che A è una superclasse di B. Denominazioni alternative equivalenti, sono classe madre o classe base per A e classe figlia o classe derivata per B. L'ereditarietà può essere ereditarietà singola o semplice (ogni classe può avere al più una superclasse diretta) java diversamente dal C++ non supporta il concetto di ereditarietà multipla. È possibile, tuttavia, aggirare parzialmente l’ostacolo avvalendosi delle interfacce e facendo, pertanto, in modo che una classe implementi più interfacce, ognuna delle quali contenga al suo interno le definizioni dei metodi che si vuole vengano implementati dalla classe stessa. o multipla (ogni classe può avere più superclassi dirette). Con riferimento al Java, si elenchino almeno tre situazioni che generano eccezioni Alcune operazioni che possono causare un’eccezione in Java può essere una divisione per 0, un’apertura di un file che non esiste oppure un accesso ad elemento in posizione negativa di un array. Con riferimento al Java, si faccia un esempio (preferibilmente codice) di super-classi e sotto-classi Proponiamo come esempio una classe Persona ed una sottoclasse Studente come esempio di super-classe e sotto-classe public class Persona { String nome; String indirizzo; public Persona() { this("John Doe","ignoto"); } public Persona(String nome) { this(nome,"ignoto"); } public Persona(String nome, String indirizzo) { this.nome = nome; this.indirizzo = indirizzo;
public String getNome() { return nome; } public String getIndirizzo() { return indirizzo; } public void visualizza() { System.out.println("Nome: " + nome + "\nIndirizzo: " + indirizzo); } public boolean omonimo(Persona p) { return this.nome.equalsIgnoreCase(p.nome); } ... } Vogliamo definire una classe Studente, che rappresenti gli studenti iscritti ad un corso di laurea. Ogni studente è descritto dal nome, dall'indirizzo, dal numero di matricola e dal piano di studio. Uno Studente è un tipo particolare di Persona. L' ereditarietà ci consente di definire questa classe senza ripetere la descrizione di tutte le variabili e i metodi di Persona , ma procedendo invece in modo incrementale: public class Studente extends Persona { // Studente eredita variabili e metodi da Persona int matricola; // Nuova variabile istanza String pianoDiStudio; // Nuova variabile istanza // Nuova variabile statica (di classe) static int nextMatricola = 1; // Costruttore public Studente(String nome, String indirizzo) { this.nome = nome; this.indirizzo = indirizzo; this.matricola = nextMatricola++; this.pianoDiStudio = ""; } // Nuovo metodo public String getPdS() { return pianoDiStudio; } // Nuovo metodo public void modificaPdS(String nuovoPdS) { pianoDiStudio += nuovoPdS + "\n"; } ... } La parola chiave extends significa che Studente è una sottoclasse o classe derivata di Persona Persona è una superclasse o classe genitrice di Studente
booleani oppure entrambi numerici interi. Con riferimento al Java, si introduca (se esiste) l'operatore || L’operatore condizionale || (OR)valuta ilsuo operando di tipo booleano di destra solo se il valore del suo operando di sinistra è false. Se l’operando di sinistra e true l’operando di destra non vienevalutato, e l’espressione ritorna true. Con riferimento al Java, si introduca (se esiste) l'operatore punto esclamativo ( !) L’operatore logico unario NOT! (complemento) può essere applicato a un operando di tipo boolean. Il risultato dell’operazione è di tipo boolean , e il suo valore è descritto dalla seguente tabella di verità: Con riferimento al Java, si introduca ActionListener La ActionListener è una interfaccia che viene notificata ogni volta che si fa clic su un pulsante o su una voce di un menù. L'interfaccia ActionListener si trova nel pacchetto java.awt.event. Ha solo un metodo: actionPerformed (). Con riferimento al Java, si introduca il concetto di "costruttore" Un costruttore è una componente di codice che viene chiamata automaticamente quando la classe viene istanziata, e provvede all’inizializzazione dell’oggetto. • Un costruttore è simile a un metodo, ma ne differisce per due aspetti: – Un costruttore non viene mai chiamato esplicitamente, ma viene attivato dal sistema in fase di inizializzazione dell’oggetto. – Un costruttore non ritorna alcun valore. Con riferimento al Java, si introduca il concetto di dynamic binding Il dynamic binding, è il binding stabilito a tempo di esecuzione. All’atto della compilazione, il compilatore non genera una volta per tutte il codice per l'assegnazione dei valori delle variabili in funzione delle chiamate dei metodi, o il codice per calcolare quale metodo chiamare in funzione delle informazioni delle variabili è determinata a seconda del flusso di esecuzione, e non può essere stabilita a priori (variabili polimorfiche). Il binding dinamico è molto importante ai fini del paradigma della programmazione orientata agli oggetti perché permette di implementare oggetti polimorfici Con riferimento al Java, si introduca il concetto di eriditarietà l' ereditarietà è uno dei concetti fondamentali nel paradigma di programmazione a oggetti. Essa consiste in una relazione che il linguaggio di programmazione, o il programmatore stesso, stabilisce tra due classi. Se la classe B eredita dalla classe A , si dice che B è una sottoclasse di A e che A è una superclasse di B. Denominazioni alternative equivalenti, sono classe madre o classe base per A e classe figlia o classe derivata per B. L'ereditarietà può essere ereditarietà singola o semplice (ogni classe può avere al più una superclasse diretta) o multipla (ogni classe può avere più superclassi dirette). Con riferimento al Java, si introduca il concetto di sotto-classe In Java le sotto-classi sono quelle classi che estendono le superclassi ereditandone le funzionalità Con riferimento al Java, si introduca il concetto di super-classe può avere infinite sotto-classi Superclasse è un termine utilizzato nella programmazione orientata agli oggetti per indicare una classe, non necessariamente astratta, che ne estende un'altra, chiamata sottoclasse. La superclasse contiene funzionalità che vengono utilizzate e/o estese da tutte le classi figlie. I metodi pubblici vengono ereditati dalla sottoclasse, quest'ultima può modificarli, tale fenomeno è definito overriding Con riferimento al Java, si introduca la classe Arrays La classe Arrays (del package java.util) contiene molti metodi (tutti statici) per manipolare gli array. Ci sono metodi per effettuare inizializzazioni, confronti, ricerche e ordinamenti, per trasformare un array in una lista e per ottenere una stringa dal contenuto dell’array (in modo da poter stampare il contenuto dell’array senza ricorrere ad un ciclo). Con riferimento al Java, si introduca la classe Math
La classe Math in Java permette di effettuare calcoli matematici complessi. I metodi e le costanti definite nella classe Math sono static. Per poterli utilizzare bisogna importare la classe inserendo all'inizio del file sorgente la direttiva import static java.lang.Math.*; che permette di chiamare gli elementi di Math col loro semplice nome, es.: double coseno = cos(angolo); Con riferimento al Java, si introduca la classe Object, in ambito di ereditarietà In Java ad ogni classe è consentito avere al massimo una super-classe: si parla perciò di ereditarietà singola. Se, all'atto della definizione di una classe, non ne specifico la super-classe, viene assunta per default la classe Object, predefinita in Java. In effetti, Object è l'unica classe che non ha una super-classe; tutte le altre classi hanno sempre esattamente una super-classe, e sono discendenti(dirette o indirette) di Object. Con riferimento al Java, si introducano delle definizioni diverse, ma non contradditorie, di "classe" Una classe è un insieme di metodi e dati raggruppati in un'unica entità così come è nella realtà. Essa serve per descrivere un oggetto... e a sua volta è spesso costituita da altri oggetti, ha legami con altri oggetti, o ne eredità le caratteristiche di base.. Con riferimento al Java, si introducano delle definizioni diverse, ma non contradditorie, di "oggetto" Un’oggetto è un’aggregazione di variabili (dati) e metodi (comportamenti, cioè funzioni). L’oggetto occupa sempre memoria che deve essere inizializzata con qualche valore. Java garantisce che le aree di memoria associate ad un oggetto vengano inizializzate subito dopo la creazione dell'oggetto, attraverso l'attivazione del Costruttore. Con riferimento al Java, si introducano gli eventi Ogni volta che l’utente di un programma scrive qualcosa, seleziona col mouse un controllo del programma, sposta o ridimensiona una finestra ecc.., viene generato un evento. Ogni evento ha una Sorgente (event source), che è il controllo che l’ha generato: ad esempio, il bottone che è stato premuto dall’utente. In tale oggetto possono essere registrati uno o più ascoltatori (event listener), cioè oggetti in grado di intraprendere le azioni necessarie a gestire l’evento. Con riferimento al Java, si introducano gli operatori Con riferimento al Java, si introducano gli operatori condizionali Gli operatori condizionali, effettuano delle operazioni tra 2 variabili e ritornano risultato booleani, true e false Con riferimento al Java, si introducano gli operatori di assegnazione Gli operatori di assegnazione sono associativi a destra: a=b=c significa a=(b=c). L’assegnazione è infatti un’espressione, il cui tipo è quello dell’operando a sinistra dell’assegnazione.L’operando di sinistra deve essere una variabile locale, un campodell’oggetto o della classe corrente, o un elemento di array. Con riferimento al Java, si introducano gli operatori di confronto
Throwable è la superclasse di tutti gli errori ed è contenuta nella java.lang. La superclasse Throwable ha due sottoclassi dirette, sempre in java.lang Error Errori fatali, dovuti a condizioni incontrollabili ‰ Esaurimento delle risorse di sistema necessarie alla JVM, incompatibilità di versioni,… „ In genere i programmi non gestiscono questi errori Exception Tutti gli errori che non rientrano in Error „ I programmi possono gestire o no questi errori a seconda dei casi cosa è un array? Un array in Java è un contenitore che permette di gestire una sequenza di lunghezza fissa di elementi tutti del medesimo tipo. Il numero di elementi in un array, detto lunghezza dell’array , deve essere dichiarato al momento della sua allocazione e non può essere cambiato. La sintassi per la dichiarazione di una variabile di tipo array è la seguente: Tipo [ ] nome; Per default le variabili di tipo array sono inizializzate con il valore null. Quindi, prima di poterle usare, dovremo inizializzarle allocando per esse la memoria per mezzo della consueta keyword ‘new’: nome = new Tipo [n]; che riserva (o ‘allocà) la memoria necessaria per contenere n elementi di tipo Tipo. cosa è un exception handler? un frammento di codice Un exception handler è l’organo che gestisce le eccezioni. Il supporto run-time riceve un oggetto eccezione e trova il gestore (handler) a cui passarlo cosa è un oggetto? Un’oggetto è un’aggregazione di variabili (dati) e metodi (comportamenti, cioè funzioni). L’oggetto occupa sempre memoria che deve essere inizializzata con qualche valore. Java garantisce che le aree di memoria associate ad un oggetto vengano inizializzate subito dopo la creazione dell'oggetto, attraverso l'attivazione del Costruttore. cosa è un package in Java? Un package è uno strumento per raggruppare tipi in qualche modo legati fra di loro Il package ha lo scopo di riunire classi (o entità analoghe, quali interfacce ed enumerazioni) logicamente correlate. Per esempio, le librerie standard Java sono organizzate in un sistema di package che comprende per esempio elementi strutturali del linguaggio servizi di rete e così via. cosa è un plugin in eclipse? I plug-in sono componenti aggiuntivi che estendono l’IDE cosa è una classe? Una classe è la descrizione astratta di un tipo di dato. Una classe è un insieme di metodi e dati raggruppati in un'unica entità così come è nella realtà. Essa serve per descrivere un oggetto... e a sua volta è spesso costituita da altri oggetti, ha legami con altri oggetti, o ne eredità le caratteristiche di base.. cosa è una coda (queue)? un tipo di dato astratto Una coda ( queue ) è un sequenza di zero o più elementi in cui è possibile aggiungere elementi soltanto ad un estremo della sequenza, detto fondo ( back ), ed è possibile toglierli soltanto dall'altro estremo, detto testa ( front ). Politica di accesso: FIFO (First In, First Out) [primo elemento inserito, primo elemento rimosso] cosa è una lista concatenata semplice (o collegata o semplicemente concatenata)?
È possibile realizzare strutture dati in grado di allocare memoria solo quand'è necessaria, per ogni singolo dato da memorizzare. Un esempio sono le liste concatenate , in cui ogni elemento è associato a un puntatore contenente l'indirizzo dell'elemento successivo. Nella figura seguente, è rappresentata una lista concatenata avente quattro elementi (detti nodi ); la variabile p punta al primo di questi nodi, mentre ciascun nodo contiene un puntatore al nodo successivo. L'ultimo nodo contiene un indirizzo speciale per il puntatore, detto NULL, corrispondente all'indirizzo zero, ad indicare che non punta a nulla. cosa è una pila (stack)? un tipo di dato astratto. Il termine stack o pila , indica un tipo di dato astratto che viene usato in diversi contesti per riferirsi a strutture dati, le cui modalità d'accesso ai dati in essa contenuti seguono una modalità LIFO ( L ast I n F irst O ut), ovvero tale per cui i dati vengono estratti (letti) in ordine rigorosamente inverso rispetto a quello in cui sono stati inseriti (scritti). cosa è una un ambiente di sviluppo integrato (IDE)? Un ambiente di sviluppo integrato è un software che, in fase di programmazione, aiuta i programmatori nello sviluppo del codice sorgente di un programma. cosa è uno stream di I/O? un flusso sequenziale di dati che entrano e/o escono da un programma cosa fa il metodo metodo System.out.format()? serve per formattare una stringa cosa rappresenta una espressione regolare? Cosa riferimento al Java, che relazione c'è tra una classe pubblica e il il nome del file che contiene la sua definizione?Motivare la risposta Ogni file sorgente ( unità di compilazione ) Java devecontenere esattamente la definizione di una classe public. Il file sorgente deve chiamarsi come la classe public che definisce e deve avere estensione". java "