Fondamenti di Informatica Lezione 1 Danilo Amendola - www2.units.it/damendola/ October 7, 2018 University of Trieste
Computers La scheda madre di un Personal Computer ed il computer ENIAC (ritenuto il IV computer della storia). Fonte: Horstmann, Core Java I 1
Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2
Java e la rete 3
Cos è Java i Linguaggio di programmazione, definito dalla Sun, oggi acquisito da Oracle; Obbiettivo di Java era la possibilità di sviluppare applicazioni: sicure, e cienti, robuste, multipiattaforma, per reti eterogenee e distribuite; Linguaggio di alto livello, semplice ed orientato agli oggetti; E un linguaggio interpretato: produce byte-code, codice intermedio per la Java Virtual Machine. CODICE SORGENTE! Compilatore! BYTECODE! Interprete Portabilità su diverse piattaform; Indipendetete dalle architetture: Byte-code indipendente dalle architetture hardware; Il byte-code può essere eseguito su ogni sistema fornito di Java Runtime Environment; 4
Cos è Java ii Robustezza: controlli estesi durante le fasi di compilazione ed esecuzione; Distribuito: Pensato per essere eseguito in rete; Funzioni di rete di basso e alto livello; Rete accessibile come i file locali; Sicurezza: Verifiche sulle caratteristiche del byte-code prima di interpretare; più e ciente: si fanno meno controlli a run-time; indizzamenti controllati dall interprete, evita condotte pericolose; Possibilità di caricamento dinamico delle classi tramite la rete; Concorrenza: Applicazioni concorrenti più facili da scrivere (rispetto ai linguaggi precedenti); Migliore interazione tra i thead. 5
Cosa serve per iniziare Cosa serve per iniziare a programmare con Java: Installate un Editor di testo (notepad, SublimeText, Atom, notepad++, TextPad, BluJ, Eclipse, etc); Installate la Java SDK (Software Developement Kit) www.oracle.com/technetwork/java/javase/downloads Attenzione: non basta la JRE (Java Runtime Environment); la command line di windows (cmd.exe) o la shell di Linux/OSX; Potete seguire una guida per l installazione di Java: guida all installazione; 6
Editor, IDE e programmazione Un Editor è un programma che ci permette di editare un file e salvarlo sul disco (Emacs, Vi, Vim, Nano, BloccoNote, Notepad++, etc. ect. etc.) Un IDE è un ambiente di sviluppo integrato che permette di automatizzare e semplificare la scrittura di codice, la compilazione, l esecuzione ed il debugging. Alcuni IDE per Java: Eclipse: eclipse.org, il più consigliato [download] Netbeans: netbeans.org IntelliJ IDEA: jetbrains.com BluJ: bluj.org DrJava drjava.org etc. Suggerimento: iniziate a programmare con un editor di testo semplice. 7
Concetti chiave: Compilazione, Esecuzione e Debugging Concetti chiave per iniziare a programmare: Compilazione: è l operazione che a partire dal codice sorgente genera il programma eseguibile da una macchina (o da VM); Esecuzione: è l operazione di avvio del programma compilato; Debugging: è una modalità di esecuzione del programma che ci permette di analizzarne il comportamento delle variabili per identificare eventuali bug. Attenzione: Un buon programmatore non si fa mai mancare un editor semplice e veloce sul proprio computer! 8
Dal codice sorgente all esecuzione del programma Fonte: Core Java I 9
Il Byte-Code Java Codice sorgente Java: { int i; int a; a=0; for( i=0;i<5; i++){ a += i ; } } Corrispondente Byte-code Java: Method void main( java. lang. String [ ] ) 0 iconst 0 // push costante 0 1 istore 2 // memorizza in var. locale 2 (a) 2 iconst 0 // push costante 0 3 istore 1 // memorizza in var. locale 1 ( i ) 4 goto 14 // vai a l l a riga 14 7 iload 2 // prendi a ( push ) 8 iload 1 // prendi i ( push ) 9 iadd // a+i 10 i s t o r e 2 // a = a+i 11 i i n c 1 1 // i=i+1 14 iload 1 // prendi i ( push ) 15 iconst 5 // push costante 5 16 i f icmplt 7 // salta a 7 se i <5 19 return // esci 10
Dal codice sorgente al programma Una volta che avete installato la Virtual Machine di Java, la JDK (Java Development Kit), ed un editor il vostro computer è pronto. Consiglio: spulciate le cartelle di installazione della VM (../Java/ ). In particolare la cartella:../bin/ Dal codice all esecuzione: Compilare col comando: javac; Eseguire col comando: java; Curiosità: peresercitarvisenzaaverela VM sul computer esistono degli ambienti online come: repl.it // 11
Commenti ed Indentazione I commenti ci pemettono di inserire del testo che verrà ignorato dal compilatore. Serve ad aumentare la leggibilità del codice. Alcune modalità di commento: Commentare un intera riga! // Commentare una porzione di codice! /... / L indentazione è una buona pratica per avere del codice leggibile. class HelloWorld public static void main(string a[])system.out.println( Hi! ); class HelloWorld { public static void main( String a [ ] ) { System. out. println ( Hi! ) ; } } 12
Commenti ed Indentazione qualche esempio I commenti ci pemettono di inserire del testo che verrà ignorato dal compilatore. Serve ad aumentare la leggibilità del codice. Alcune modalità di commento: Commentare un intera riga! // Commentare una porzione di codice! /... / I commenti al codice in Java: / Un commento a l n o s t r o primo programma i n Java / class HelloWorld { // Un commento al main del programma public static void main( String a){ System. out. println ( Hi! ) ; // Questa riga stampa un saluto } } 13
Compilazione ed Esecuzione Un programma viene prima scritto, poi compilato ed infine eseguito (ammesso che tutto vada bene...): Per scrivere un programma: si scrive il programma con un editor si compila col comando: javac si esegue col comando: java 14
Variabili ed assegnazione i Una variabile rappresenta una locazione di memoria in cui è memorizzato un valore, essa è caratterizzata da: Nome: sequanza di caratteri che permette di identificare la variabile; Tipo: specidicazione del tipo di dato che la variabile può immagazzinare (numero intero, numero relae, carattere, etc.) Indirizzo di memoria: locazione di memoria nella quale la variabile è momorizzata (la dimensione dipende dal tipo); Valore: è il valore immagazzinato nella varibile ad un certo istante. 15
Variabili ed assegnazione ii Una variabile è un riferimento ad una locazione di memoria in cui è memorizzato un valore. Possiamo pensare ad una variabile come ad una scatola in un magazino pieno di scatole, ogni scatola ha la sua etichetta ed è conservata in uno sca ale. Fonte: Cima-Salza, Sapienza 16
Variabili ed assegnazione iii Dichiarare una variabile Java è un linguaggio fortemente tipizzato, una varibile va sempre dichiarata: tipo nomevariabile ; Assegnare un valore L operatore di Assegnazione ( = ) fa si che il valore di una variabile assuma il valore indicato: nomevariabile = valoreasegnato ; 17
Variabili ed assegnazione: esempi Una variabile rappresenta una locazione di memoria in cui è memorizzato un valore, essa è caratterizzata da: Dichiarazioni di varibili: int numero1 ; double numero2 ; char carattere ; Assengazione di valori a variabili: numero1 = 10; numero2 = 0.5; carattere = ' c ' ; E possibile fare una dichiarazione ed una assegnazione (cioè inizializzazione) di varibili sulla stessa riga: int numero3 = 100; char carattere1 = ' b ' ; 18
I tipi primitivi in Java i Il tipo di un dato rappresenta l insieme delle caratteristiche che che il valore assunto da una variabile dovrà soddisfare. ItipiprimitiviinJava: boolean b = true; char c = k ; byte x = -10; short t = -10000; int j = 7; long l = 10000; float f = 0.003; double d = -0.000004432; //boleani //caratteri //byte //interi //interi //interi //decimali //decimali 19
I tipi primitivi in Java ii Il tipo di un dato rappresenta l insieme delle caratteristiche che che il valore assunto da una variabile dovrà soddisfare. Itipiprimitivi in Java: Tipo Q.ta Mem. Range Descrizione boolean! 1bit [true false] Vero/falso (true o false) char! 16 bit [ \u0000, \u ] Caratteri charset Unicode o[0,65535] byte! 8bit [ 128,127] short! 16 bit [ 32.768, 32.767] Numeri interi int! 32 bit [ 2 31,2 31 1] Numeri interi long! 64 bit [ 2 63,2 63 1] Numeri interi float! 32 bit spec. IEEE 754 Num. virg. mobile (sing.prec.) 8bitexp.:[-126,127] double! 64 bit spec. IEEE 754 doppia precisione 20
Assegnazione di valori alle variabili i Alcuni esempi di assegmamento di valori a variabili con cast di valore: class Assegnamenti{ public static void main( String [ ] argomenti ){ byte abyte = (byte)0b01100001; char bchar = (char)abyte; int bint = (int)abyte; System. out. println ( abyte > + abyte) ; // Risultato : 97 System. out. println ( cchar > + bchar) ; // Risultato : a System. out. println ( bint > + bint ) ; // Risultato : 97 } } 21
Assegnazione di valori alle variabili ii Prendiamo un esempio: char c = a ; byte x = (byte)0b01100001; int i = 97 Il char a in decimale è uguale a 97! Tabella di conversione ASCII 22
Il primo programma Java: esempi Un programma Java che stampa a schermo Hello World! : // Hello World in Java class HelloWorld { public static void main( String args [ ] ) { System. out. println ( Hello World! ) ; } } Un programma Java che calcola l area di un triangolo e la stampa a schermo: public class Esempio1 { / Scrivere un programma che dati base ed altezza di un triangolo, ne calcoli larea. / public static void main( String [ ] args ) { double base = 3.5; double altezza = 4.3; double area = base altezza / 2; System. out. println ( Area : + area ) ; } } 23
Esercizi proposti Scrivere una soluzione per i seguenti problemi: Esercizio 1: Dati due numeri interi a e b, calcolare il quoziente e il resto della divisione (intera) di a con b. Esercizio 2: Dati due numeri reali a e b, calcolare il quoziente e il resto della divisione (intera) di a con b. Esercizio 3: Data base e altezza di un rettangolo, calcolare la lunghezza della diagonale. Prova a svolgere i tre esercizi e poi confrontati con la soluzione proposta di seguito. 24
Fine Fine 28
Extra: Il primo programma Java in Eclipse i Download di Eclipse dal sito: eclipse.org > Download > Java IDE Installazione di Eclipse Avviare Eclipse e scegliere il workspace Fonte: Slides 2016 29
Extra: Il primo programma Java in Eclipse ii Fonte: Slides 2016 30
Extra: Il primo programma Java in Eclipse iii Creare il progetto inserendo un nome rappresentativo 31
Extra: Il primo programma Java in Eclipse iv Creare il file della classe 32
Extra: Il primo programma Java in Eclipse v Creare il file della classe 33
Extra: Il primo programma Java in Eclipse vi Creare il file della classe 34
Extra: Il primo programma Java in Eclipse vii Creare il file della classe 35
Extra: Il primo programma Java in Eclipse viii Creare il file della classe 36