Fondamenti di Informatica T1 Introduzione al linguaggio Java Input/Output-Variabili-Tipi Tutor Melissa Licciardello [email protected] Melissa Licciardello Fondamenti di Informatica T1 1 / 15 Che cos’è un programma? Un programma è una sequenza finita di istruzioni che, una volta eseguite, produce soluzioni per una data classe di problemi automatizzati. Ogni programma deve essere scritto in un linguaggio di programmazione, ovvero utilizzando un particolare insieme di parole chiave che, nell’insieme, devono rispettare I I una SINTASSI : insieme di regole formali che il costrutto di una frase deve rispettare (ad esempio, in italiano, ogni frase deve essere formata da SOGGETTO + VERBO + PREDICATO) una SEMANTICA : significato da attribuire ad ogni frase sintatticamente corretta (non tutte le frase sintatticamente corrette hanno un senso, anche in italiano. Esempi?) Ogni programma, per risolvere un particolare problema, fa uso di un algoritmo : sequenza finita di passi per risolvere in un tempo finito un problema. Melissa Licciardello Fondamenti di Informatica T1 2 / 15 Java Linguaggio ad alto livello molto simile ad il linguaggio naturale Sia compilato che interpretato I I Non viene direttamente compilato in linguaggio macchina ma in bytecode, un linguaggio intermedio indipendente dalla macchina → PORTABILITA’ Quando viene lanciato un programma, è la JVM ad ”interpretarlo” (da bytecode a linguaggio macchina) a seconda dell’hardware sottostante Melissa Licciardello Fondamenti di Informatica T1 3 / 15 Tipi di dato primitivi in Java Sono i tipi di dato messi a disposizione automaticamente dal linguaggio Per creare tipi di dato più ”particolari” → Classi ed Oggetti ( li vedremo più avanti) Melissa Licciardello Fondamenti di Informatica T1 4 / 15 Le variabili in Java Variabile : astrazione di una cella di memoria → ci consente di memorizzare dati I I I I I Dobbiamo dichiararne il tipo (int, float, char.. Il nostro programma deve sapere come interpretarlo e quanta memoria riservare!) Dobbiamo associarci un nome con il quale ci potremmo riferire a lei durante la scrittura del programma ( Convenzione → lettera iniziale minuscola ) A runtime le verrà associato un valore La sintassi di dichiarazione è quindi del tipo <tipo> <nome>; La sintassi di assegnamento è del tipo <nome> = <valore>; Esempio : int contatore; //dichiarazione contatore = 7; //assegnamento Melissa Licciardello Fondamenti di Informatica T1 5 / 15 Operatori aritmetici in Java + → Somma - → Sottrazione * → Moltiplicazione / → Divisione % → Resto ( Es : 17%4 = 1 ) Melissa Licciardello Fondamenti di Informatica T1 6 / 15 Regole di precedenza Da precedenza più alta a precedenza più bassa I I Operatori binari di moltiplicazione, divisione e resto (*,/, %) Operatori binari di somma e sottrazione (+, −) Possibilità di modificare l’ordine di precedenza con l’inserimento di parentesi (esattamente come le normali espressioni algebriche) Melissa Licciardello Fondamenti di Informatica T1 7 / 15 Operatori logici e comparativi in Java == → Uguale (ATTENZIONE : è molto diverso dal ”=” dell’assegnamento) != → Diverso > → Maggiore >= → Maggiore Uguale < → Minore <= → Minore Uguale && → AND logico || → OR logico Melissa Licciardello Fondamenti di Informatica T1 8 / 15 Input da tastiera : La classe SCANNER Per leggere dati da tastiera si utilizza la classe Scanner che si trova nel package java.util I I I I I Per poterla utilizzare bisogna importarla con l’istruzione import java.util.Scanner nelle prime righe del programma Per creare un’istanza → Scanner scanner = new Scanner(System.in); Lettura di un numero intero → int i = scanner.nextInt(); Lettura di un numero reale → double d = scanner.nextDouble(); Chiusura dello scanner (ricordarsi di farlo una volta che quest’ultimo non ci serve più) → scanner.close(); Melissa Licciardello Fondamenti di Informatica T1 9 / 15 Output Viene utilizzato l’oggetto System.out I I metodo System.out.print(”Ciao”); → stampa la stringa contenuta fra gli apici metodo System.out.println(”Ciao”); → stampa la stringa contenuta fra gli apici e va a capo E’ possibile concatenare più elementi da stampare a video con l’operatore ”+” Esempio: int i = 7; System.out.println(”La mia variabile vale ” + i + ” !”); Quello che verrà visualizzato sullo schermo sarà La mia variabile vale 7 ! Melissa Licciardello Fondamenti di Informatica T1 10 / 15 Esercizio 1 (SVOLTO) Scrivere un programma che, inseriti da tastiera due numeri interi, ne calcoli la somma e la stampi a video. Melissa Licciardello Fondamenti di Informatica T1 11 / 15 Soluzione primo esercizio Melissa Licciardello Fondamenti di Informatica T1 12 / 15 Esercizio 2 Scrivere un programma che, inseriti da tastiera due numeri interi, ne calcoli la somma, sottrazione, prodotto e divisione e li stampi a video. Melissa Licciardello Fondamenti di Informatica T1 13 / 15 Esercizio 3 Scrivere un programma che, inserite le coordinate cartesiane di un punto ed i coefficienti di una retta in forma implicita (tutti quanti considerati come double), calcoli la distanza del punto dalla retta. ...per chi non si ricordasse la formula, dato P (Xp , Yp ) e r : ax + by + c = 0 |aX +bY +c| d = √p a2 +bp2 Per le funzioni matematiche di utility guardare la descrizione della classe Math nella slide successiva. Suggerimento: non svolgete il calcolo ”direttamente”, create delle variabili di appoggio dove andrete a memorizzare i risultati parziali per rendere il tutto più lineare e leggibile. Melissa Licciardello Fondamenti di Informatica T1 14 / 15 La classe MATH La classe Math è una particolare classe che contiene numerosi metodi statici ( capiremo in seguito cosa sono esattamente) e costanti utili per i calcoli matematici Per una descrizione completa delle funzionalità → http: //docs.oracle.com/javase/7/docs/api/java/lang/Math.html Alcune funzioni utili che ci serviranno in questa esercitazione I I I int valore assoluto = Math.abs(x); → Ritorna il valore assoluto di x double quadrato = Math.pow(x,2); → Ritorna il quadrato di x double radice = Math.sqrt(x); → Ritorna la radice quadrata di x Melissa Licciardello Fondamenti di Informatica T1 15 / 15