JAVA

Input E Output

Gestione dei flussi di Input e Output in Java. Analisi della sintassi del punto di ingresso main, dei metodi print e println, e prima introduzione all'istanza della classe Scanner.

Durata

30 minuti

Software

OnlineGDB (Compiler Java)

Linguaggio

JAVA

Java è un linguaggio fortemente tipizzato e orientato agli oggetti. Ogni applicazione Java deve essere strutturata internamente a una classe. Vediamo il codice sorgente minimale per l'avvio di un applicativo, il celebre Hello World:

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Analisi strutturale dei componenti sintattici:

  • public class Main: Dichiarazione della classe principale. In Java, tutto il codice eseguibile deve risiedere all'interno di un blocco classe.
  • public static void main: Rappresenta il metodo di ingresso (entry-point) del programma. Senza questa esatta firma, la Java Virtual Machine non può avviare l'applicazione.
  • System.out.println: Chiamata al metodo di sistema per inviare una stringa di testo allo stream di output standard (la console) con un ritorno a capo automatico.

L'architettura di esecuzione:
A differenza di linguaggi puramente compilati come il C++, Java adotta un approccio ibrido. Il codice sorgente non viene convertito direttamente in codice macchina specifico per un processore, ma viene tradotto in un formato intermedio standardizzato chiamato Bytecode. Sarà compito della JVM (Java Virtual Machine) installata sull'host interpretare ed eseguire il bytecode, garantendo la portabilità del software.


LABORATORIO

Primo Programma

In questa fase passeremo dalla semplice stampa a video alla ricezione di dati dall'esterno.


1 Compilazione ed esecuzione

Aprire l'IDE cloud OnlineGDB e impostare il selettore del linguaggio su Java. Sostituire il codice predefinito con l'algoritmo di "Hello World" precedentemente analizzato. Premere il pulsante Run. La console inferiore mostrerà l'output testuale generato dall'esecuzione del bytecode all'interno della JVM remota.


2 Sviluppo di un flusso Interattivo

Per rendere l'applicazione dinamica, introduciamo l'acquisizione dei dati provenienti dalla periferica di input. Questa operazione richiede l'importazione della classe utility Scanner dal pacchetto standard del JDK.

import java.util.Scanner; // Importazione della classe per la gestione dell'input

public class Main {
    public static void main(String[] args) {
        // Istanza dell'oggetto Scanner collegato allo stream di input standard (System.in)
        Scanner lettore = new Scanner(System.in);
        
        System.out.print("Come ti chiami? ");
        String nome = lettore.nextLine(); // Lettura dell'intera riga inserita dall'utente
        
        System.out.println("Benvenuto nel laboratorio di Informatica, " + nome + "!");
        
        lettore.close(); // Chiusura formale dello stream per prevenire memory leak
    }
}
1. Gestione dei flussi di Output

Il canale di output System.out espone due metodi principali per la scrittura di informazioni nel terminale:

Metodo Comportamento Operativo Sintassi d'Esempio
print() Invia il testo alla console mantenendo il cursore sulla medesima riga, consentendo input consecutivi. System.out.print("Voto: ");
println() Invia il testo alla console e appone un carattere di fine riga (newline), spostando il cursore a capo. System.out.println("Fine Programma");

2. Gestione dei flussi di Input

L'utilizzo della classe Scanner per mappare e catturare i flussi dalla tastiera si articola in tre fasi sequenziali stabili:

  • Importazione: Dichiarazione esterna alla classe tramite import java.util.Scanner;.
  • Istanziazione: Allocazione dell'oggetto di gestione: Scanner tastiera = new Scanner(System.in);.
  • Estrazione (Parsing): Invocazione del metodo coerente con il tipo di dato primitivo atteso dal flusso.
Tipo di dato Metodo di Lettura dedicato Implementazione Tipica nel Codice
Intero (int) nextInt() int anni = tastiera.nextInt();
Decimale (double) nextDouble() double prezzo = tastiera.nextDouble();
Stringa (Parola singola) next() String nome = tastiera.next();
Stringa (Riga completa) nextLine() String frase = tastiera.nextLine();

3 Esercizio di Consolidamento: Calcolo Spesa Energetica

Scenario di Laboratorio: Un tecnico deve calcolare il costo del consumo elettrico di un server in laboratorio. Scrivere un programma Java strutturato che implementi le seguenti specifiche:

  • Acquisisca in input il consumo espresso in kWh (tipo double, es: 150.5).
  • Acquisisca in input il costo unitario per singola unità di kWh (tipo double, es: 0.22).
  • Elabori il costo totale moltiplicando i valori inseriti.
  • Visualizzi sul terminale la stringa di output formattata: "Il costo totale dell'energia è: [risultato] Euro".



In sintesi

Argomenti: concetti principali, riepilogo, competenze

  1. Ogni applicazione Java è vincolata a risiedere all'interno di una classe e richiede un metodo entry-point public static void main.
  2. Il codice sorgente Java non produce eseguibili nativi, ma viene tradotto dal compilatore in bytecode indipendente dall'hardware.
  3. I flussi di output standard verso il terminale sono gestiti dai metodi di istanza print() e println().
  4. L'acquisizione dei flussi di input standard da console richiede l'importazione ed istanziazione esplicita della classe java.util.Scanner.

Cosa hai imparato
  1. A decodificare la struttura sintattica e i modificatori di accesso del punto di ingresso principale di un software Java.
  2. La differenza operativa tra l'interruzione di riga fornita da println() rispetto al posizionamento del cursore di print().
  3. L'applicazione della parola chiave new per allocare in memoria l'oggetto di scansione dello stream System.in.
  4. La manipolazione e l'estrazione di dati primitivi e testuali tramite i metodi tokenizzatori dello Scanner.


Java, JVM, HelloWorld, Informatica, Scuola Superiore,