Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma...
Transcript of Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma...
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’e Java i
• Linguaggio di programmazione, definito dalla Sun, oggi acquisito da
Oracle;
• Obbiettivo di Java era la possibilita 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
• Portabilita su diverse piattaform;
• Indipendetete dalle architetture:
• Byte-code indipendente dalle architetture hardware;
• Il byte-code puo essere eseguito su ogni sistema fornito di Java
Runtime Environment;
4
Cos’e 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;
• piu e�ciente: si fanno meno controlli a run-time;
• indizzamenti controllati dall’interprete, evita condotte pericolose;
• Possibilita di caricamento dinamico delle classi tramite la rete;
• Concorrenza:
• Applicazioni concorrenti piu 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 e un programma che ci permette di editare un file e salvarlo sul
disco (Emacs, Vi, Vim, Nano, BloccoNote, Notepad++, etc. ect. etc.)
Un IDE e 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 piu 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: e l’operazione che a partire dal codice sorgente
genera il programma eseguibile da una macchina (o da VM);
• Esecuzione: e l’operazione di avvio del programma compilato;
• Debugging: e una modalita 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 ( j a v a . l ang . S t r i n g [ ] )
0 i c o n s t 0 // push c o s t a n t e 0
1 i s t o r e 2 // memorizza i n va r . l o c a l e 2 ( a )
2 i c o n s t 0 // push c o s t a n t e 0
3 i s t o r e 1 // memorizza i n va r . l o c a l e 1 ( i )
4 goto 14 // v a i a l l a r i g a 14
7 i l o a d 2 // p r e nd i a ( push )
8 i l o a d 1 // p r e nd i i ( push )
9 i add // a+i
10 i s t o r e 2 // a = a+i
11 i i n c 1 1 // i=i+1
14 i l o a d 1 // p r e nd i i ( push )
15 i c o n s t 5 // push c o s t a n t e 5
16 i f i c m p l t 7 // s a l t a a 7 se i<5
19 return // e s c i10
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 e pronto.
Consiglio: spulciate le cartelle di installazione della VM (../Java/⇤). Inparticolare la cartella: ../bin/
Dal codice all’esecuzione:
Compilare col comando: javac;
Eseguire col comando: java;
Curiosita: per esercitarvi senza avere la
VM sul computer esistono degli ambienti
online come: repl.it
//
11
Commenti ed Indentazione
I commenti ci pemettono di inserire del testo che verra ignorato dal
compilatore. Serve ad aumentare la leggibilita del codice.
Alcune modalita di commento:
• Commentare un intera riga ! //
• Commentare una porzione di codice ! / ⇤ ... ⇤ /
L’indentazione e una buona pratica per avere del codice leggibile.
class HelloWorld public static
void main(String
a[])System.out.println(”Hi!”);
class Hel loWor ld {public static void main ( S t r i n g a [ ] )
{System . out . p r i n t l n ( ”Hi ! ” ) ;
}}
12
Commenti ed Indentazione qualche esempio
I commenti ci pemettono di inserire del testo che verra ignorato dal
compilatore. Serve ad aumentare la leggibilita del codice.
Alcune modalita 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 pr imo programma i n Java
∗/class Hel loWor ld {
// Un commento a l main d e l programma
public static void main ( S t r i n g a ){System . out . p r i n t l n ( ”Hi ! ” ) ; // Questa r i g a stampa un s a l u t o
}}
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 e memorizzato
un valore, essa e caratterizzata da:
• Nome: sequanza di caratteri che permette di identificare la variabile;
• Tipo: specidicazione del tipo di dato che la variabile puo
immagazzinare (numero intero, numero relae, carattere, etc.)
• Indirizzo di memoria: locazione di memoria nella quale la variabile e
momorizzata (la dimensione dipende dal tipo);
• Valore: e il valore immagazzinato nella varibile ad un certo istante.
15
Variabili ed assegnazione ii
Una variabile e un riferimento ad una locazione di memoria in cui e
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 e conservata in uno sca↵ale.
Fonte: Cima-Salza, Sapienza
16
Variabili ed assegnazione iii
Dichiarare una variabile
Java e un linguaggio fortemente tipizzato, una varibile va sempre
dichiarata:
t i p o nomeVa r i ab i l e ;
Assegnare un valore
L’operatore di Assegnazione ( = ) fa si che il valore di una variabile
assuma il valore indicato:
nomeVa r i ab i l e = va l o r eA s egna t o ;
17
Variabili ed assegnazione: esempi
Una variabile rappresenta una locazione di memoria in cui e memorizzato
un valore, essa e caratterizzata da: Dichiarazioni di varibili:
int numero1 ;
double numero2 ;
char c a r a t t e r e ;
Assengazione di valori a variabili:
numero1 = 10 ;
numero2 = 0 . 5 ;
c a r a t t e r e = ' c ' ;
E’ possibile fare una dichiarazione ed una assegnazione (cioe
inizializzazione) di varibili sulla stessa riga:
int numero3 = 100 ;
char c a r a t t e r e 1 = 'b ' ;
18
I tipi primitivi in Java i
Il tipo di un dato rappresenta l’insieme delle caratteristiche che che ilvalore assunto da una variabile dovra soddisfare.
I tipi primitivi in Java:
• 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 dovra soddisfare.
I tipi primitivi in Java:
Tipo Q.ta Mem. Range Descrizione
boolean ! 1 bit [true | false] Vero/falso (true o false)
char ! 16 bit [’\u0000’, ’\u↵↵ ’] Caratteri charset Unicode
o [0, 65535]
byte ! 8 bit [�128,127]
short ! 16 bit [�32.768, 32.767] Numeri interi
int ! 32 bit [�231, 2
31 � 1] Numeri interi
long ! 64 bit [�263, 2
63 � 1] Numeri interi
float ! 32 bit spec. IEEE 754 Num. virg. mobile (sing.prec.)
8 bit exp.: [-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 Assegnament i{public static void main ( S t r i n g [ ] a rgoment i ){
byte aByte = (byte ) 0b01100001 ;
char bChar = (char ) aByte ;
int b I n t = (int ) aByte ;
System . out . p r i n t l n ( ”aByte�>” + aByte ) ; // R i s u l t a t o : 97
System . out . p r i n t l n ( ”cChar�>” + bChar ) ; // R i s u l t a t o : a
System . out . p r i n t l n ( ” b In t�>” + b I n t ) ; // R i s u l t a t o : 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 e uguale a 97!
Tabella di conversione ASCII
22
Il primo programma Java: esempi
Un programma Java che stampa a schermo ”Hello World!”:
// He l l o World i n Java
class Hel loWor ld {public static void main ( S t r i n g a r g s [ ] ) {
System . out . p r i n t l n ( ” He l l o World ! ” ) ;
}}
Un programma Java che calcola l’area di un triangolo e la stampa a
schermo:
public class Esempio1 {/∗∗ S c r i v e r e un programma che d a t i base ed a l t e z z a d i un
∗ t r i a n g o l o , ne c a l c o l i l a r e a .
∗/public static void main ( S t r i n g [ ] a r g s ) {
double base = 3 . 5 ;
double a l t e z z a = 4 . 3 ;
double a r ea = base ∗ a l t e z z a / 2 ;
System . out . p r i n t l n ( ”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