Appendice B

Installazione e utilizzo di NetBeans

NetBeans è un IDE (Integrated Development Environment) open source e cross-platform (gira su Windows, Gnu/Linux, Mac OS X e Solaris) che consente di creare applicazioni per il Web, per il desktop e per il mondo mobile. Supporta, oltre al linguaggio Java, anche i linguaggi C/C++, PHP e Groovy.

NetBeans include molte delle caratteristiche che un moderno ambiente di sviluppo deve possedere, tra le quali citiamo:

  • il real time code parsing, con cui l’IDE, mentre si digita del codice, effettua un’analisi alla ricerca, per esempio, di eventuali errori sintattici;
  • il refactoring, che consente di eseguire operazioni automatizzate, per esempio la rinomina di identificatori, lo spostamento di classi in altri package, l’estrazione di interfacce o superclassi e così via;
  • l’intellisense, con cui mentre digitiamo il codice per keyword, identificatori e altro possiamo ottenere una lista delle possibili selezioni la cui scelta ci consente di completarli automaticamente;
  • la navigazione verso file, tipi e simboli;
  • gli snippet di codice, con cui possiamo inserire in determinati punti del codice sorgente frammenti di codice personalizzati o predefiniti;
  • il WYSIWYG (What You See Is What You Get), con cui si può disegnare un’interfaccia utente in modo grafico senza scrivere alcuna riga di codice e vedendone il risultato in tempo reale come apparirebbe se l’applicazione fosse in esecuzione;
  • un sistema per il versioning del codice attraverso Git, Mercurial o Subversion;
  • un profiler per monitorare aspetti importanti di un’applicazione come l’uso della memoria e della CPU;
  • un debugger per effettuare operazioni di ricerca di errori nel codice.

NOTA

Per utilizzarlo come IDE per lo sviluppo in C, è necessario, come requisito preliminare, installare almeno il JRE (Java Runtime Environment) di Java dalla versione 7 in poi.

Installazione dell’IDE in ambiente GNU/Linux

Prima di vedere quali sono i passi essenziali per scaricare e installare NetBeans soffermiamoci un attimo su come scaricare e installare un JRE di Java. Se nel vostro sistema GNU/Linux è già ha installato un JRE o un JDK (Java Development Kit), procedete oltre con la lettura.

  1. Digitare l’URL http://java.com/it/download e fare clic sul pulsante Download gratuito di Java. Fare clic quindi sul link Linux x64 RPM e salvarlo in locale.
  2. Aprire una shell da utente root e spostarsi nella directory dove è stato scaricato il file .rpm del JRE. Eseguire il comando rpm -ivh jre-8u25-linux-x64.rpm (per noi quello è il nome dei file correntemente scaricato) per procedere con l’installazione dell’ambiente di runtime di Java.
  3. Verificare che l’installazione è andata a buon fine digitando il comando java -version che dovrà ritornare la corrente versione di Java installata.

Per installare NetBeans fare quanto segue.

  1. Digitare l’URL https://netbeans.org/downloads e fare clic sul pulsante Download posto sotto la colonna C/C++. Salvare in locale il file ottenuto (per noi netbeans-8.0.2-cpp-linux.sh).
  2. Aprire una shell da utente root e spostarsi nella directory dove è stato scaricato il file .sh di NetBeans. Eseguire il comando chmod +x netbeans-8.0.2-cpp-linux.sh && ./netbeans-8.0.2-cpp-linux.sh per avviare la procedura d’installazione dell’IDE.
  3. Nella finestra NetBeans IDE Installer fare clic sul pulsante Next, accettare la licenza e fare clic ancora sul pulsante Next. Scegliere la directory di installazione o accettare quella presentata, quindi fare clic sul pulsante Next. Infine, fare clic sul pulsante Install. Al termine dell’installazione, fare clic sul pulsante Finish lasciando spuntata, se si desidera, la casella per l’invio di dati di utilizzo anonimi.
  4. Verificare il funzionamento dell’IDE avviandolo con, per esempio, il comando /usr/local/netbeans-8.0.2/bin/netbeans &.

Installazione dell’IDE in ambiente Windows

Anche in questo caso, prima di elencare i passi necessari per scaricare e installare NetBeans soffermiamoci brevemente su come scaricare e installare un JRE di Java (se nel vostro sistema Windows è già ha installato un JRE o un JDK procedere oltre con la lettura).

  1. Digitare l’URL http://java.com/it/download e fare clic sul pulsante Download gratuito di Java. Fare clic sul pulsante Accettate e avviate il download gratuito e salvare in locale il file indicato (per noi jxpiinstall.exe).

NOTA

Se il vostro sistema è a 64 bit accedete all’URL http://java.com/it/download/manual.jsp e poi fate clic sul link Windows Non in linea (64 bit), che farà scaricare un eseguibile, come per esempio jre-8u25-windows-x64.exe.

  1. Spostarsi nella directory dove è stato scaricato il file .exe e avviarlo per procedere con l’installazione del sistema runtime di Java.
  2. Collegarsi all’URL http://java.com/it/download/installed8.jsp (se non è stato fatto in automatico), fare clic sul pulsante Verifica della versione Java e seguire i passi descritti per verificare la correttezza dell’installazione di Java.

Per installare NetBeans fare quanto segue.

  1. Digitare l’URL https://netbeans.org/downloads e fare clic sul pulsante Download posto sotto la colonna C/C++. Salvare in locale il file ottenuto (per noi netbeans-8.0.2-cpp-windows.exe).
  2. Spostarsi nella directory dove è stato scaricato il file .exe di NetBeans e avviarlo per procedere con l’installazione dell’IDE.
  3. Nella finestra NetBeans IDE Installer fare clic sul pulsante Next, accettare la licenza e fare clic ancora sul pulsante Next. Scegliere la directory di installazione o accettare quella presentata, quindi fare clic sul pulsante Next. Infine, fare clic sul pulsante Install. Al termine dell’installazione, fare clic sul pulsante Finish lasciando spuntata, se si desidera, la casella per l’invio di dati di utilizzo anonimi.
  4. Verificare il funzionamento dell’IDE. In Windows 8.1 fare clic sul pulsante Windows e digitare la sequenza di caratteri netbeans... finché nella casella di testo della ricerca non apparirà la scritta NetBeans IDE 8.0.2, fare clic anche su questa per avviarlo.

Creare un progetto per un’applicazione C

Vediamo ora i passi necessari per creare un progetto in NetBeans che consente di sviluppare un’applicazione in C.

  1. Avviare l’IDE.
  2. Verificare che l’IDE abbia trovato correttamente tutti gli strumenti di MinGW o di GCC. Fare clic sul menu Tools > Options, quindi sull’etichetta C/C++ nel pannello in alto della finestra di dialogo aperta. Fare clic sul tab Build Tools e verificare che, a sinistra, nell’area Tool Collection sia presente la voce MinGW o GNU. Verificare quindi che nelle caselle di testo dell’area centrale (Base Directory, C Compiler e così via) siano presenti i path completi dei relativi tool (in caso MinGW o GCC non siano stati rilevati dall’IDE, rivedere i loro passi di installazione presentati nell’Appendice A oppure fare clic sul pulsante Restore Defaults per forzare l’IDE a ricercare i tool della relativa suite di compilazione).
  3. Fare clic sul menu File > New Project e scegliere nella finestra di dialogo aperta nell’area Categories: la voce C/C++ e nell’area Projects la voce C/C++ Application. Fare clic sul pulsante Next >. Nelle caselle di testo dell’area centrale Project Name and Location scegliere il nome del progetto (per esempio C_Test) e la locazione del progetto. Assicurarsi che nel menu a tendina, a fianco della casella di testo al cui interno è presente la voce main, sia attiva la voce C. Infine fare clic sul pulsante Finish.
  4. Nell’area di sinistra dell’IDE dal tab Projects fare doppio clic sulla voce C_Test e poi sulla voce Source Files e sul file main.c. A questo punto nell’area centrale dell’IDE, tab Source, apparirà uno scheletro minimale della nostra applicazione con l’inclusione degli header <stdio.h> e <stdlib.h> e della funzione main.
  5. Digitare nel corpo del main printf("Hello from NetBeans.\n"); e poi selezionare il menu Run > Run Project (C_Test) per avviare la compilazione e l’esecuzione del programma relativo.
  6. Verificare che nell’area Output posta in basso nella finestra dell’IDE sia presente la scritta Hello from NetBeans. e sotto qualcosa come RUN FINISHED.
  7. Digitare print("Hello again!\n"); per verificare che l’IDE sia subito in grado di rilevare un errore (real time code parsing); a fianco dell’istruzione print, al posto del numero di riga, apparirà un’icona a forma di lampadina e un cerchio solido rosso con un punto esclamativo, posizionando il mouse sulla quale comparirà un tooltip con la descrizione dell’errore (al di sotto dell’istruzione print si vedrà anche una riga rossa ondulata a indicare l’errore; anche in questo caso sarà possibile far apparire il tooltip di errore posizionando il mouse sopra l’istruzione).
  8. Avviare di nuovo la compilazione ed esecuzione del programma (premere direttamente il tasto F6).
  9. Questa volta nell’area Output saranno mostrate delle indicazioni che rileveranno l’errore prima citato (main.c:18: undefined reference to 'print'), e il build del programma avrà esito negativo.

NOTA

È possibile solamente compilare un file .c usando la voce del menu Run -> Compile File oppure premere il tasto F9.

Diamo infine due utili indicazioni che consentono, rispettivamente, di fornire al compilatore delle apposite opzioni di compilazione e di passare alla funzione main degli argomenti da riga di comando quando si avvia il relativo programma.

  • Selezionare il tab Projects e fare clic con il pulsante destro del mouse sulla voce C_Test per far apparire il menu contestuale. Selezionare quindi la voce Properties. Nell’area Categories fare doppio clic sulla voce Build e poi clic sulla voce C Compiler. Nell’area centrale fare clic nella cella Additional Options e lì inserire le opzioni di compilazione desiderate (per esempio -std=c11). Infine fare clic sul pulsante OK.
  • Selezionare il tab Projects e fare clic con il pulsante destro del mouse sulla voce C_Test per far apparire il menu contestuale. Selezionare quindi la voce Properties. Nell’area Categories fare un clic sulla voce Run e poi nell’area centrale fare clic nella cella al cui interno è posta la scritta "${OUTPUT_PATH}" e dopo di essa digitare gli argomenti che saranno passati alla funzione main (per esempio "${OUTPUT_PATH}" -list -rgb). Infine fare clic sul pulsante OK.

Utilizzare un progetto per un’applicazione C

Se si dispone di progetti creati con l’IDE NetBeans, come è il caso di quelli forniti con il presente testo, è possibile utilizzarli nel seguente modo.

  1. Fare clic sul menu File > Open Project e nella finestra di dialogo che appare localizzare il percorso del progetto desiderato, selezionarlo (per esempio fare clic su PrimoProgramma) e fare clic infine sul pulsante Open Project (le icone delle directory dove si trovano tutti i file di un progetto NetBeans hanno la forma di un parallelepipedo azzurro con al centro un disegno di una ruota dentata gialla).
  2. Nell’area di sinistra dell’IDE dal tab Projects fare doppio clic sul nome del progetto caricato (per esempio PrimoProgramma), quindi lo stesso sulla voce Source Files e infine sul nome del file .c di interesse che contiene la funzione main (per esempio PrimoProgramma.c).
  3. Compiere quindi i consueti passi già illustrati per editare, compilare e avviare la relativa applicazione C.

Debugging di un’applicazione

NetBeans offre un potente front end visuale per GDB, o per un altro eventuale debugger proprio della corrente toolchain, attraverso il quale è possibile, in modo intuitivo e semplice, compiere le comuni operazioni di avvio della fase di debugging, impostazione di breakpoint, avanzamento riga per riga, attraverso le righe del codice sorgente, cambiamento dei valori delle variabili e così via.

Vediamo di seguito i passi da compiere per effettuare una sessione di debugging, posto che abbiamo caricato il progetto Debugging.

  1. Nell’area centrale dell’IDE dove è presente il codice sorgente (tab Source) impostare un breakpoint facendo clic con il pulsante sinistro del mouse su una riga di codice (per esempio sulla riga 14).
  2. Fare clic sul menu Debug > Debug Project (Debug) o premere i tasti Ctrl+F5 per avviare la fase di debugging.
  3. Avanzare alle righe di codice successive premendo il tasto F7 (Step Into) due volte così da entrare nella funzione makeSum (a ogni avanzamento vedrete apparire, alla sinistra dell’area del codice sorgente, una freccia verde che indicherà il punto dove si troverà la prossima riga di codice che sarà eseguita).
  4. Selezionare la variabile a nel seguente modo *a e poi lasciare su tale selezione il puntatore sinistro del mouse in modo che appaia un tooltip che mostri il valore riferito dal puntatore.
  5. Avanzare di un’altra riga di codice premendo il tasto F7 oppure il tasto F8 (Step Over). Solitamente il comportamento di Step Over è il seguente: se incontra una chiamata di funzione, esegue tutte le sue istruzioni senza entrarvi dentro ed eseguire, quindi, step by step, ogni singola istruzione.
  6. Visualizzare la finestra Variables; fare clic sul menu Window > Debugging > Variables. Questa finestra dovrebbe essere già presente dopo l’attivazione della corrente sessione di debugging.
  7. Nella riga dove appare il nome della variabile sum modificarne il valore; fare clic nella cella della colonna Value, inserire il valore 500 e premere Invio.
  8. Uscire subito dalla funzione corrente premendo i tasti Ctrl+F7 (Step Out). In linea generale il comportamento di Step Out è il seguente: finisce l’esecuzione dell’attuale funzione e fa fermare il debugging nel punto dove è stata invocata la funzione.
  9. Avanzare di altre righe di codice premendo il tasto F8 finché la freccia verde di indicazione della corrente riga dello step di debugging non arriva sull’istruzione return (EXIT_SUCCESS); verificare che nella console di output appaia la stringa Somma = 500.
  10. Terminare la corrente sessione di debugging premendo i tasti Maiusc+F5.

Ricordiamo, infine, che attraverso il menu Window > Debugging è possibile visualizzare, tra le altre e al di sotto dell’area centrale del codice sorgente, le seguenti ulteriori finestre.

  • Call Stack: mostra una serie di righe ciascuna contenente informazioni sul nome delle funzioni attive (quelle che sono state invocate ma che non sono ancora ritornate), sui loro parametri e relativi valori. Questa finestra dovrebbe essere già presente dopo l’attivazione della corrente sessione di debugging.
  • Breakpoints: mostra informazioni sui breakpoint impostati (nome del file di codice sorgente e numero di riga nel codice sorgente). È possibile da qui anche disattivare o cancellare un determinato breakpoint. Questa finestra dovrebbe essere già presente dopo l’attivazione della corrente sessione di debugging.
  • Expression Evaluation: nella casella di testo Expression è possibile digitare delle espressioni il cui risultato sarà mostrato nella sovrastante area di output in tempo reale. Per esempio, se ci troviamo come step di debugging nella funzione makeSum, possiamo digitare *a + 5 per ottenere il valore 105.
  • Watches: consente di monitorare i cambiamenti di valore di un variabile o di un’espressione durante l’esecuzione del programma.
  • Disassembly: mostra il codice assembly della corrente funzione.

La Figura B.1 mostra un’immagine dell’IDE durante l’attivazione della fase di debugging dove sono evidenziate le icone che è possibile utilizzare per attivare le fasi descritte di avvio del debugging, stop del debugging, step over, step into e step out delle istruzioni.

Evidenzia anche le icone usate dall’IDE per mostrare i breakpoint (un quadrato pieno rosso) e il corrente step di esecuzione del debugging (una freccia verde).

B_1.jpg

Figura B.1 Uno snapshot dell’IDE in modalità debug.